import { WindowsPathUtil } from '../utils/windowsPath'

// 支付配置
export const PAYMENT_CONFIG = {
  // 对账配置
  reconciliation: {
    // 对账任务
    tasks: {
      // 支付宝对账
      alipay: {
        enabled: true,
        schedule: '0 2 * * *', // 每天凌晨2点
        billType: 'trade',
        downloadPath: WindowsPathUtil.getSystemPaths().bills + '\\alipay',
        retention: '7y', // 保留7年
        format: {
          encoding: 'utf8', // 统一使用UTF-8编码
          separator: ',',
        },
      },

      // 微信支付对账
      wechat: {
        enabled: true,
        schedule: '0 3 * * *', // 每天凌晨3点
        billType: 'ALL',
        downloadPath: WindowsPathUtil.getSystemPaths().bills + '\\wechat',
        retention: '7y',
        format: {
          encoding: 'utf8',
          separator: ',',
        },
      },

      // QQ支付对账
      qq: {
        enabled: true,
        schedule: '0 4 * * *', // 每天凌晨4点
        billType: 'ALL',
        downloadPath: WindowsPathUtil.getSystemPaths().bills + '\\qq',
        retention: '7y',
        format: {
          encoding: 'utf8',
          separator: ',',
        },
      },
    },

    // 对账规则
    rules: {
      // 金额匹配
      amount: {
        tolerance: 0.01, // 1分钱误差
        mismatchAction: 'alert', // 不匹配时告警
      },

      // 状态匹配
      status: {
        retryTimeout: 1800, // 30分钟后重试
        mismatchAction: 'review', // 不匹配时人工审核
      },

      // 退款匹配
      refund: {
        checkPeriod: '7d', // 检查7天内退款
        mismatchAction: 'alert',
      },
    },

    // 差错处理
    discrepancy: {
      // 自动处理
      auto: {
        enabled: true,
        rules: [
          {
            type: '金额差异',
            threshold: 1.0, // 1元内自动处理
            action: 'autoFix',
          },
          {
            type: '状态不一致',
            condition: 'timeout',
            action: 'markFailed',
          },
        ],
      },

      // 人工处理
      manual: {
        notification: {
          email: true,
          dingtalk: true,
        },
        workflow: ['差错发现', '原因分析', '处理方案', '执行处理', '结果确认'],
      },
    },

    // 报表配置
    reports: {
      // 日报
      daily: {
        enabled: true,
        items: ['交易总额', '交易笔数', '退款金额', '手续费', '差错统计'],
        format: 'EXCEL',
        path: WindowsPathUtil.getSystemPaths().reports + '\\daily',
      },

      // 月报
      monthly: {
        enabled: true,
        items: ['月度汇总', '渠道分析', '差错分析', '趋势对比'],
        format: 'PDF',
        path: WindowsPathUtil.getSystemPaths().reports + '\\monthly',
      },
    },

    // 监控配置
    monitoring: {
      // 对账监控
      metrics: [
        {
          name: '差错率',
          warning: '>=0.1%',
          critical: '>=0.5%',
        },
        {
          name: '未对账订单',
          warning: '>=100',
          critical: '>=500',
        },
      ],

      // 告警通知
      alerts: {
        channels: {
          dingtalk: {
            enabled: true,
            webhook: process.env.DINGTALK_WEBHOOK,
          },
          email: {
            enabled: true,
            template: 'RECONCILIATION_ALERT',
          },
        },
      },
    },
  },

  // 支付安全配置
  security: {
    // 加密配置
    encryption: {
      algorithm: 'aes-256-cbc',
      key: process.env.PAYMENT_ENCRYPTION_KEY,
      iv: process.env.PAYMENT_ENCRYPTION_IV,
    },

    // 回调验证
    callback: {
      alipay: {
        verifySign: true,
        notifyUrl: process.env.ALIPAY_NOTIFY_URL,
      },
      wechat: {
        verifySign: true,
        notifyUrl: process.env.WECHAT_NOTIFY_URL,
      },
      qq: {
        verifySign: true,
        notifyUrl: process.env.QQ_NOTIFY_URL,
      },
      apple: {
        verifySign: true,
        notifyUrl: process.env.APPLE_NOTIFY_URL,
      },
    },

    // 异常处理
    exception: {
      retryCount: 3,
      retryInterval: 1000,
      alertThreshold: 5,
    },
  },

  // 中国本地化配置
  localization: {
    currency: {
      symbol: '¥',
      precision: 2,
    },
    timezone: 'Asia/Shanghai',
    dateFormat: 'YYYY-MM-DD',
    datetimeFormat: 'YYYY-MM-DD HH:mm:ss',
  },
}
